package Alibaba;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author zhangmin
 * @create 2022-01-30 13:48
 * 剑指 Offer 45. 把数组排成最小的数
 * 输入一个非负整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
 * 排序重写比较函数，比较时将两个数拼接成字符串进行比较
 */
public class minNumber_JZ45 {
    public String minNumber(int[] nums) {
        String[] numStr=new String[nums.length];
        for (int i = 0; i < nums.length; i++) {
            numStr[i]=String.valueOf(nums[i]);
        }
        Arrays.sort(numStr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o1+o2).compareTo(o2+o1);
            }
        });
        StringBuffer sb=new StringBuffer();
        for (String str:numStr) {
            sb.append(str);
        }
        return sb.toString();
    }
}
